/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.modelo;

import Mproyectos.entidades.Asesor;
import Mproyectos.entidades.PalabraClave;
import java.util.Collection;
import javax.ejb.Stateless;
import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 * Clase que que implementa el acceso a la persistencia de Palabra Clave
 */
@ViewScoped
@Stateless
public class FachadaPalabraClave {

    /**
     * Manejador de entidades
     */
    @PersistenceContext(unitName = "ManejadorProyectosPU")
    private EntityManager em;

    /**
     * Adiciona un Palabra Clave. Si el Palabra Clave ya existe lanza una
     * excepcion
     *
     * @param Palabra Clave a adicionar
     */
    public void adicionar(PalabraClave palabraClave) {
        em.persist(palabraClave);
    }

    /**
     * Actualiza la Palabra Clave. Actualiza los datos la Palabra Clave
     *
     * @param la Palabra Clave a adicionar
     */
    public void actualizar(PalabraClave palabraClave) {
        em.merge(palabraClave);
    }

    /**
     * Elimina la Palabra Clave .
     *
     * @param la Palabra Clave a eliminar
     */
    public void eliminar(PalabraClave palabraClave) {
        em.remove(em.merge(palabraClave));
    }

    /**
     * Busca la Palabra Clave con el nombre dado. Retorna null si no existe
     *
     * @param nombre Nombre del artista
     * @return null si el artista no existe o el objeto artista
     */
    public PalabraClave buscar(String palabra) {
        return em.find(PalabraClave.class, palabra);
    }

    /**
     * Retorna TODOS las Palabra Claves que se han almacenado
     *
     * @return Lista las Palabra Claves
     */
    public Collection<PalabraClave> listar() {
        Query query = em.createQuery("SELECT a FROM PalabraClave a ");
        return (Collection<PalabraClave>) query.getResultList();
    }
}
